Gesture-initiated remote control programming

ABSTRACT

A method and system for configuring a universal remote control (URC) to control a remote-controlled device includes establishing a communication link between the URC and the remote-controlled device in response to detecting a gesture motion of the URC. Device information may be received from the remote-controlled device and used by the URC to program the URC to control the remote-controlled device. The URC may be configured to control a plurality of remote-controlled devices. The communication link may be a near field wireless communication link.

BACKGROUND

1. Field of the Disclosure

The present disclosure relates to remote control and, more particularly,to gesture-initiated programming of a remote control.

2. Description of the Related Art

Remote control devices provide convenient operation of equipment from adistance. Many consumer electronic devices are equipped with remotecontrol (RC) features. A universal remote control (URC), which may beconfigured to control different pieces of equipment, may often bedifficult to reconfigure and reprogram.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of selected elements of an embodiment of aremote control system;

FIG. 2 illustrates an embodiment of a method for operating a URC;

FIG. 3 illustrates an embodiment of a method for operating a URC;

FIG. 4 is a block diagram of selected elements of an embodiment of aremote-controlled device; and

FIG. 5 is a block diagram of selected elements of an embodiment of aremote control system.

DESCRIPTION OF THE EXEMPLARY EMBODIMENTS

In one aspect, a disclosed method for configuring a URC includesdetecting a gesture motion of the URC, and in response thereto,establishing a wireless communication link with a remote-controlleddevice. The method may further include receiving, via the wirelesscommunication link, device information from the remote-controlleddevice. Based on the device information, the method may further includeprogramming the URC to control the remote-controlled device, and storingthe device information in the URC.

In certain embodiments, responsive to displaying at least a portion ofthe device information on a display device of the URC, the method mayfurther include receiving user input to select the remote-controlleddevice for said programming. The gesture motion may include the URCtraversing a pre-defined spatial path. The gesture motion may include anoscillating motion. The method operation of establishing the wirelesslink may include establishing a near field communication link insubstantial compliance with at least one of the following standards:IEEE 802.15.4, IEEE 802.11, and IEEE 802.15.1. Device information for aplurality of remote-controlled devices may be displayed.

In particular embodiments, the method operation of establishing aconnection with a remote-controlled device may further include signalingthe remote-controlled device to initiate programming of the URC. Thedevice information may include programming codes for enabling the URC tocontrol the remote-controlled device and/or identifying information forthe remote-controlled device.

In various embodiments, responsive to user input, the method may stillfurther include sending a remote control message to theremote-controlled device, the remote control message including aninstruction executable by the remote-controlled device.

In another aspect, a disclosed URC includes a processor, a motionsensor, a near field transceiver, and memory media accessible to theprocessor. The memory media may include instructions executable by theprocessor to, responsive to the motion sensor detecting a gesturemotion, receive device identifying information from at least oneremote-controlled device available for programming the URC. The memorymedia may further include processor instructions executable to,responsive to user input selecting an available remote-controlleddevice, signal the remote-controlled device to send device programminginformation to the URC, and receive, via the near field transceiver, thedevice programming information from the remote-controlled device. Thememory media may yet further include processor instructions executableto, responsive to receiving the device programming information, programthe URC to control the remote-controlled device.

In particular embodiments, the URC may further include a display devicecontrolled by the processor, along with processor instructionsexecutable to display an indication of the at least one availableremote-controlled devices using the display device.

In certain embodiments, the URC may further include a user controlinterface configured to receive user input, and processor instructionsexecutable to select, based on the user control interface, an availableremote-controlled device for programming the URC to control. The usercontrol interface may be a touch interface responsive to tactile userinput. The user control interface may be an audio interface responsiveto user speech input. The processor instructions to identify at leastone remote-controlled device may further include processor instructionsexecutable to broadcast, via the near field transceiver, aremote-controlled device query for available remote-controlled devices.Based on receiving a response to the query, the processor instructionsmay further be executable to identify at least one availableremote-controlled device. The near field transceiver may be an infrared(IR) or a near field radio-frequency (RF) wireless interface.

In a further aspect, a disclosed computer-readable memory media includesexecutable instructions for configuring a URC. The instructions may beexecutable to respond to sensing a gesture motion of the URC bywirelessly detecting remote-controlled devices in a vicinity of the URCavailable for programming the URC, select one of the detected availableremote-controlled devices, and signal the selected remote-controlleddevice to initiate programming of the URC and to send programming codesto the URC. The instructions may further be executable to receive theprogramming codes from the remote-controlled device, and program the URCto control the remote-controlled device, using the programming codes.The instructions to detect remote-controlled devices may further includeinstructions executable to send a wireless identification message forremote-controlled devices. Based on a received response to the wirelessidentification message, the instructions may further be executable toidentify the available remote-controlled devices in the vicinity. Adetermination may be made that no available remote-controlled devicesmay be detected when no response to the wireless identification messageis received within a pre-determined time. In certain embodiments, thememory media may include instructions executable to display anindication of the available remote-controlled devices in the vicinity.

In the following description, details are set forth by way of example tofacilitate discussion of the disclosed subject matter. It should beapparent to a person of ordinary skill in the field, however, that thedisclosed embodiments are exemplary and not exhaustive of all possibleembodiments.

Throughout this disclosure, a hyphenated form of a reference numeralrefers to a specific instance of an element and the un-hyphenated formof the reference numeral refers to the element generically orcollectively. Thus, for example, widget 12-1 refers to an instance of awidget class, which may be referred to collectively as widgets 12 andany one of which may be referred to generically as a widget 12.

Referring now to FIG. 1, a block diagram of selected elements of anembodiment of remote-controlled system 100 are depicted. System 100illustrates devices, interfaces and information that may be processed toenable URC 108 to control remote-controlled device 112. In system 100,remote-controlled device 112 represents any of a number of differenttypes of devices that are remote-controlled, such as media players,televisions, or client-premises equipment (CPE) for multimedia contentdistribution networks (MCDNs), among others. As used herein, a “gesture”or “gesture motion” or “gesture command” refers to a particular motion,or sequences of motions, imparted to an RC by a user for the purpose ofproviding user input to the RC. The gesture motion may be a translationor a rotation, or a combination thereof, in 2- or 3-dimensional space.Specific gesture motions may be defined and assigned to predeterminedcommands or functions. As will be described in detail herein, URC 108may be configured to detect a gesture motion for initiating programmingof URC 108 to control remote-controlled device 112. URC 108 may thenreceive device information, such as identifying information andprogramming information, from remote-controlled device 112. Afterreceiving the device information, URC 108 may be programmed to controlremote-controlled device 112 via wireless communication link 102. Uponreceiving command data from URC 108, remote-controlled device 112 mayexecute a remote control function corresponding to the remote controlcommand. In this manner, a user of remote-controlled system 100 may beprovided a simplified, yet flexible interface for configuring URC 108 tocontrol and operate remote-controlled device 112.

In FIG. 1, URC 108 is depicted communicating with remote-controlleddevice 112 via wireless communication link 102. In other embodiments,wireless communication link 102 may be replaced by a mechanicallyconnected interface, or some combination of different interfaces (notshown in FIG. 1).

As shown in FIG. 1, URC 108, which may be a hand-held and manuallyoperated device, includes numerous elements, and may include additionalelements (not shown in FIG. 1) in various embodiments. URC 108 is shownincluding processor 106, near field transceiver 120, memory 125, motionsensor(s) 104, and display 114. Memory 125 is depicted in FIG. 1including gesture detection 118, RCD control codes 122-1, RCD controlcodes 122-2, and user control interface 116. Accordingly, URC 108 maycomprise elements configured to function as an embodiment of anelectronic device capable of executing program instructions. URC 108 mayfurther include at least one shared bus (not shown in FIG. 1) forinterconnectivity among internal elements, such as those depicted inFIG. 1.

Processor 106 may represent at least one processing unit and may furtherinclude internal memory, such as a cache for storing processorexecutable instructions. In certain embodiments, processor 106 serves asa main controller for URC 108. In various embodiments, processor 106 isoperable to perform remote control operations, including gesturedetection and processing operations, as described herein.

In FIG. 1, near field transceiver 120 may represent a communicationstransceiver providing an interface for any of a number of communicationlinks. In certain embodiments, near field transceiver 120 supportswireless communication links, such as IR, RF, and audio, among others.Near field transceiver 120 may further support mechanically connectedcommunication links to URCs, such as galvanically wired connections,connections to external antennas, etc., and may accordingly include aphysical adapter or receptacle for receiving such connections. In oneembodiment, near field transceiver 120 transforms an instruction foroperating remote-controlled device 112 into a signal sent via wirelesscommunication link 102. It is noted that near field transceiver 120 maybe a bidirectional interface, such that responses, such as commands,information, or acknowledgements, may be received from remote-controlleddevice 112 via wireless communication link 102. In one embodiment, amessage may be sent to remote-controlled device 112 and anacknowledgement of the message may be received from remote-controlleddevice 112, such that the message is sent and the acknowledgment isreceived via near field transceiver 120. The message may include commanddata, as will be described below.

Also in FIG. 1, memory 125 encompasses persistent and volatile media,fixed and removable media, magnetic and semiconductor media, or acombination thereof. Memory 125 is operable to store instructions, data,or both. Memory 125 as shown includes data, which may be in the form ofsets or sequences of executable instructions, namely, gesture detection118. Gesture detection 118 may include processor executable instructionsto detect and interpret gesture motions as user input. For example,gesture detection, in conjunction with motion sensor(s) 104, as will bedescribed below, may be configured to detect URC 108 traversing apre-defined spatial path, and interpret this as user input. As will bedescribed herein, the user input may be interpreted by gesture detection118 as an indication to begin programming URC 108 to control a newremote-controlled device.

Memory 125 is further shown including RCD control codes 122-1 and 122-2,representing respective programming information for additionalremote-controlled devices (not shown in FIG. 1; see also FIG. 4). URC108 as depicted in FIG. 1 is configured to control two remote-controlleddevices, while being configured to initiate programming to controlremote-controlled device 112, which may be a new remote-controlleddevice. Accordingly, URC 108 may be configured to control a plurality ofremote-controlled devices.

Memory 125 is still further depicted in FIG. 1 including user controlinterface 116, representing functionality to control a variety of inputcontrol elements integrated into URC 108. User control interface 116 maysupport the use of buttons, sliders, switches or other types ofelectromechanical input devices (not shown in FIG. 1), or virtualimplementations thereof. For example, user control interface 116 maysupport power control elements for powering URC 108 on or off. Usercontrol interface 116 may additionally support control elements thatgenerate remote control commands executable by remote-controlled device112, such as, but not limited to, info, play, pause, guide, purchase,browse, etc. In certain embodiments, user control interface 116 mayinclude control elements associated with a remote control context (notshown in FIG. 1) executing on URC 108 and/or remote-controlled device112. The remote control context may be in the form of a displayed menustructure that is controlled by user control interface 116. Inparticular, user control interface 116 may support functionality toselect an activated item in the remote control context.

URC 108, as depicted in FIG. 1, includes motion sensor(s) 104, which maybe mechanically integrated into URC 108. Motion sensor(s) 104 mayrepresent devices configured to detect linear translations, rotationaltranslations, linear acceleration, rotational acceleration, or acombination thereof. For example, motion sensor(s) 104 may be configuredto determine a spatial acceleration involving multiple axes of motionsimultaneously. Motion sensor(s) 104 may include microelectromechanicalsystems (MEMS) or MEMS components, such as accelerometers, gyroscopes,or other types of motion sensors. It is noted that motion sensor(s) 104may represent sensors configured to detect translation or rotation ofURC 108 in multiple dimensions simultaneously.

In FIG. 1, URC 108 is shown including display 114 which may represent adisplay device implemented as a liquid crystal display screen, acomputer monitor, a television, a touch screen device, or the like. Thedisplay element may comply with a display standard for the correspondingtype of display. Standards for computer monitors include analogstandards such as video graphics array (VGA), extended graphics array(XGA), etc., or digital standards such as digital visual interface (DVI)or high-definition multimedia interface (HDMI), among others. Atelevision display may comply with standards such as National TelevisionSystem Committee (NTSC), Phase Alternating Line (PAL), or anothersuitable standard. It is noted that display 114 may be configured todisplay a list of remote-controlled devices detected in a vicinity ofURC 108. Display 114 may further enable user input for selecting one ofthe displayed remote-controlled device for programming URC 108 tocontrol, as will be described in detail herein.

In operation, URC 108, after power on, may be enabled to detect agesture motion, such as a pre-determined spatial path. The detectedgesture motion may be interpreted as a user command or signal toinitiate a programming mode of URC 108. In other embodiments, aprogramming mode may be initiated with additional or alternate userinput. Then, URC 108 may establish a wireless communication link withremote-controlled device 112. In certain embodiments, URC 108 maybroadcast, using near field transceiver 120, a query for anyremote-controlled devices in a vicinity of URC 108. The query may be abeacon or a wireless identification message to which a number ofremote-controlled devices may respond. The extent of the vicinity may bedetermined by the field strength, frequency, or other attribute of nearfield transceiver 120. Remote-controlled devices responding to the querymay be considered “available” for programming URC 108 to control. Theavailable remote-controlled devices may be displayed by URC 108 and userinput may be received for selecting at least one of the availableremote-controlled device for programming, such as remote-controlleddevice 112. Remote-controlled device 112 may then send programming codesto URC 108, which may store the programming codes as RCD control codes,similar to RCD control codes 122-1 and 122-2, in memory 125. URC 108 maythen be configured to control remote-controlled device 112, and mayaccordingly send, via wireless communication link 102, commands toremote-controlled device 112, which remote-controlled device 112 mayreceive and execute. The commands may correspond to the RCD controlcodes (not shown in FIG. 1) for remote-controlled device 112 stored inmemory 125.

Turning now to FIG. 2, an embodiment of method 200 for configuring a URCis illustrated. In one embodiment, method 200 is performed at least inpart by gesture detection 118 executing on URC 108 (see FIG. 1). Memory125 (see FIG. 1) may further include additional executable code forperforming method 200. It is noted that certain operations described inmethod 200 may be optional or may be rearranged in differentembodiments.

Method 200 may begin by detecting a gesture motion of the URC (operation202). The gesture motion may be detected using motion sensor(s) 104 (seeFIG. 1). The gesture motion may serve as a signal to initiate aprogramming mode or function on the URC. A wireless identificationmessage may be sent for remote-controlled device(s) in a vicinity of theURC (operation 204). It is noted that certain remote-controlleddevice(s) may be configured to receive the identification message, andrespond accordingly.

Method 200 may proceed by determining whether one or more response(s)were received to the wireless identification message (operation 206). Ifthe result of the determination in operation 206 is NO, then noremote-controlled devices (or new remote-controlled devices) wereidentified, and method 200 may end (operation 208). In certainembodiments, no available remote-controlled devices are detected when noresponse to the wireless identification message is received within apre-determined time. If the result of the determination in operation 206is YES, then at least one response from a remote-controlled device wasdetected. The available remote-controlled device(s) may be identifiedfrom the response(s) (operation 210). The response(s) may include deviceidentification information for the responding remote-controlleddevice(s).

An indication of the available remote-controlled device(s) may bedisplayed (operation 212). For example, a list of availableremote-controlled device(s) may be displayed on display 114 (see FIG.1). User input selecting a remote-controlled device from the displayedindication may be received (operation 214). The selectedremote-controlled device may be signaled to send device information tothe URC (operation 216). Alternatively, the device information may beprovided to the URC during the initial response by the remote-controlleddevice. The device information, including programming codes, may bereceived from the remote-controlled device (operation 218). Using thedevice information, the URC may be programmed to control theremote-controlled device (operation 220). The remote-controlled devicemay represent a new remote-controlled device, which the URC is nowconfigured to control. The received device information may be stored inthe URC (operation 222). The device information may be stored as RCDcontrol codes 122 in memory 125 of URC 108 (see FIG. 1).

Turning now to FIG. 3, an embodiment of method 300 for operating a URCis illustrated. In one embodiment, method 300 is performed by URC 108(see FIG. 1) in conjunction with user input. It is noted that certainoperations described in method 300 may be optional or may be rearrangedin different embodiments.

Method 300 may begin by performing gesture-initiated programming of aURC to control a remote-controlled device (operation 304) In oneembodiment, operation 304 corresponds to method 200 (see FIG. 2). Userinput specifying a remote control function for the remote-controlleddevice may be received (operation 306). The user input may be receivedin response to displaying user control interface 116 on display 114. Aremote control message, including an instruction executable by theremote-controlled device, may be sent to the remote-controlled device(operation 308). The instruction, or command, may be sent by near fieldtransceiver 120 via wireless communication link 102 to remote-controlleddevice 112. Remote-controlled device 112 may then respond by executingthe instruction.

Referring now to FIG. 4, a block diagram illustrating selected elementsof an embodiment of remote-controlled device 112 is presented. As notedpreviously, remote-controlled device 112 may represent any of a numberof different types of devices that are remote-controlled, such as mediaplayers, televisions, or CPE for MCDNs, among others. In FIG. 4,remote-controlled device 112 is shown as a functional component alongwith display 426, independent of any physical implementation, and may beany combination of elements of remote-controlled device 112 and display426.

In the embodiment depicted in FIG. 4, remote-controlled device 112includes processor 401 coupled via shared bus 402 to storage mediacollectively identified as storage 410. Remote-controlled device 112, asdepicted in FIG. 4, further includes network adapter 420 that mayinterface remote-controlled device 112 to a local area network (LAN)through which remote-controlled device 112 may receive and sendmultimedia content (not shown in FIG. 4). Network adapter 420 mayfurther enable connectivity to a wide area network (WAN) for receivingand sending multimedia content via an access network (not shown in FIG.4).

In embodiments suitable for use in Internet protocol (IP) based contentdelivery networks, remote-controlled device 112, as depicted in FIG. 4,may include transport unit 430 that assembles the payloads from asequence or set of network packets into a stream of multimedia content.In coaxial based access networks, content may be delivered as a streamthat is not packet based and it may not be necessary in theseembodiments to include transport unit 430. In a coaxial implementation,however, tuning resources (not explicitly depicted in FIG. 4) may berequired to “filter” desired content from other content that isdelivered over the coaxial medium simultaneously and these tuners may beprovided in remote-controlled device 112. The stream of multimediacontent received by transport unit 430 may include audio information andvideo information and transport unit 430 may parse or segregate the twoto generate video stream 432 and audio stream 434 as shown.

Video and audio streams 432 and 434, as output from transport unit 430,may include audio or video information that is compressed, encrypted, orboth. A decoder unit 440 is shown as receiving video and audio streams432 and 434 and generating native format video and audio streams 442 and444. Decoder 440 may employ any of various widely distributed videodecoding algorithms including any of the Motion Pictures Expert Group(MPEG) standards, or Windows Media Video (WMV) standards including WMV9, which has been standardized as Video Codec-1 (VC-1) by the Society ofMotion Picture and Television Engineers. Similarly decoder 440 mayemploy any of various audio decoding algorithms including Dolby®Digital, Digital Theatre System (DTS) Coherent Acoustics, and WindowsMedia Audio (WMA).

The native format video and audio streams 442 and 444 as shown in FIG. 4may be processed by encoders/digital-to-analog converters(encoders/DACs) 450 and 470 respectively to produce analog video andaudio signals 452 and 454 in a format compliant with display 426, whichitself may not be a part of remote-controlled device 112. Display 426may comply with NTSC, PAL or any other suitable television standard.

Storage 410 encompasses persistent and volatile media, fixed andremovable media, and magnetic and semiconductor media. Storage 410 isoperable to store instructions, data, or both. Storage 410 as shown mayinclude sets or sequences of instructions, namely, an operating system412, a remote control application program identified as remote controlmodule 414, and electronic programming guide (EPG) 416. Operating system412 may be a UNIX or UNIX-like operating system, a Windows® familyoperating system, or another suitable operating system. In someembodiments, storage 410 is configured to store and execute instructionsprovided as services by an application server via the WAN (not shown inFIG. 4).

EPG 416 represents a guide to multimedia content available for viewingusing remote-controlled device 112, and may be shown to the user as anelement of the user interface. The user interface may include aplurality of menu items arranged according to one or more menu layouts,which enable a user to operate remote-controlled device 112. The usermay operate the user interface, including EPG 416, using URC 108 (seeFIG. 1) in conjunction with remote control module 414. In someembodiments, EPG 416 may include an implementation of a remote controlcontext, as described above.

Local transceiver 408 represents an interface of remote-controlleddevice 112 for communicating with external devices, such as URC 108 (seeFIG. 1), or another remote control device. Local transceiver 408 mayprovide a mechanical interface for coupling to an external device, suchas a plug, socket, or other proximal adapter. In some cases, localtransceiver 408 is a wireless transceiver, configured to send andreceive IR or RF or other signals. Local transceiver 408 may be accessedby remote control module 414 for providing remote control functionality.

Turning now to FIG. 5, vicinity 500 of URC 108 is depicted. Vicinity 500may represent an area serviceable by near field transceiver 120 (seeFIG. 1). URC 108 is shown in FIG. 5 configured to control threeremote-controlled devices 112-1, 112-2, and 112-3, via wirelesscommunication link 102. In certain embodiments, remote-controlled device112-3 in FIG. 5 may correspond to newly configured remote-controlleddevice 112, as shown in FIG. 1. As described herein, URC 108 may beconfigured to be programmed to control a remote-controlled deviceintroduced into vicinity 500. Wireless communication link 102 may be insubstantial compliance with at least one of the following standards:IEEE 802.15.4 (ZigBee), IEEE 802.11 (WiFi), and IEEE 802.15.1(Bluetooth).

To the maximum extent allowed by law, the scope of the presentdisclosure is to be determined by the broadest permissibleinterpretation of the following claims and their equivalents, and shallnot be restricted or limited to the specific embodiments described inthe foregoing detailed description.

1-20. (canceled)
 21. A method for configuring a universal remote control, comprising: displaying, on a display device of a universal remote control, a list of available remote controlled devices; selecting one of the available remote-controlled devices for programming; responsive to detecting a gesture motion of the universal remote control, establishing a wireless communication link with the remote-controlled device selected; receiving, via the wireless communication link, device information from the remote-controlled device; based on the device information, programming the universal remote control to control the remote-controlled device; and storing the device information in the universal remote control.
 22. The method of claim 21, wherein the gesture motion includes the universal remote control traversing a pre-defined spatial path.
 23. The method of claim 21, wherein the gesture motion comprises an oscillating motion.
 24. The method of claim 21, wherein establishing the wireless communication link comprises establishing a near field communication link in substantial compliance with at least one of the following standards: IEEE 802.15. 4, IEEE 802.11, and IEEE 802.15.1.
 25. The method of claim 21, further comprising: responsive to displaying at least a portion of the device information on a display device of the universal remote control, receiving user input to select the remote-controlled device for said programming.
 26. The method of claim 25, wherein device information for a plurality of remote-controlled devices is displayed.
 27. The method of claim 21, wherein said establishing a wireless communication link with a remote-controlled device further comprises: signaling the remote-controlled device to initiate programming of the universal remote control.
 28. The method of claim 21, wherein the device information includes programming codes for enabling the universal remote control to control the remote-controlled device.
 29. The method of claim 21, wherein the device information includes identifying information for the remote-controlled device.
 30. The method of claim 21, further comprising: responsive to user input, sending a remote control message to the remote-controlled device, the remote control message including an instruction executable by the remote-controlled device.
 31. A universal remote control, comprising: a processor; a motion sensor; a near field transceiver; and memory media, including processor executable instructions that, when executed by the processor, cause the processor to perform operations comprising: displaying, on a display device of a universal remote control, a list of available remote-controlled devices; selecting one of the available remote-controlled devices for programming; receiving device identifying information from the remote-controlled device selected; signaling the remote-controlled device to send device programming information to the universal remote control; receiving, via the near field transceiver, the device programming information from the remote-controlled device; and responsive to receiving the device programming information, programming the universal remote control to control the remote-controlled device.
 32. The universal remote control of claim 31, further comprising: a display device controlled by the processor; and wherein the operations include: displaying an indication of the at least one available remote-controlled devices using the display device.
 33. The universal remote control of claim 31, further comprising: a user control interface configured to receive user input; and wherein the operations include: selecting, for programming, an available remote-controlled device based on user input to the user control interface.
 34. The universal remote control of claim 33, wherein the user control interface is a touch interface responsive to tactile user input.
 35. The universal remote control of claim 33, wherein the user control interface is an audio interface responsive to user speech input.
 36. The universal remote control of claim 31, wherein identifying the remote-controlled device includes: broadcasting, via the near field transceiver, a remote-controlled device query for available remote-controlled devices; and based on receiving a response to the query, identifying at least one available remote-controlled device.
 37. The universal remote control of claim 31, wherein the near field transceiver is selected from the group consisting of: an infrared radio-frequency (RF) wireless interface, a near field RF wireless interface, and a RF wireless interface substantially conforming to an IEEE 802.15.1 standard.
 38. A computer-readable memory device, including processor executable instructions that, when executed by the processor, cause the processor to perform operations comprising: displaying, on a display device of a universal remote control, a list of available remote-controlled devices; selecting one of the available remote-controlled devices for programming; signaling the selected remote-controlled device to initiate programming of the universal remote control and to send programming codes to the universal remote control; receiving the programming codes from the remote-controlled device; and using the programming codes, programming the universal remote control to control the remote-controlled device.
 39. The memory device of claim 38, wherein detecting the remote-controlled devices includes: sending a wireless identification message for remote-controlled devices; and based on a received response to the wireless identification message, identifying the available remote-controlled devices in the vicinity.
 40. The memory device of claim 39, wherein no available remote-controlled devices are detected when no response to the wireless identification message is received within a pre-determined time, and wherein the operations include: displaying an indication of the available remote-controlled devices in the vicinity. 